package demo;

public class Demo15 {
    public static void main(String[] args) {
        /**
         * 将7进制解析为整数
         */
        String str = "-123";
        //将字符串s按照7进制解析为整数
        int num = Integer.parseInt(str,7);
        System.out.println(num);

        num = parseInt(str,7);
        System.out.println(num);
    }

    /**
     * 解析API方法
     * @param str
     * @param radix
     * @return
     */
    public static int parseInt(String str,int radix) {
        //negative 负数,负号
//        boolean negative = false;//正数.
        boolean negative = str.charAt(0)=='-';//第一个字符就是'-'就是负数
        int end = negative ? 1:0;//这个意思是"-123"从后往前检查数值
        int weight = 1;//权
        int sum = 0;//累计数
        for (int i = str.length()-1; i >= end; i--) {//遍历数组
            char c = str.charAt(i);//获取单个数值的位置
            int n = c-'0';//将char类型的123转成int类型
            if (n<0||n>=radix){
                throw new NumberFormatException("解析错误:"+c);
            }
            sum += (str.charAt(i)-'0') * weight;//累加7进制算法
            weight *= radix;//获得转位的数字
        }
        return negative ? -sum : sum;
    }
}
